{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "\n",
    "def high_pass_3(data, length):\n",
    "    f = 1.414 * np.pi / length\n",
    "    a1 = np.exp(-f)\n",
    "    c2 = 2 * a1 * np.cos(f)\n",
    "    c3 = -a1 * a1\n",
    "    c1 = (1 + c2 - c3) / 4\n",
    "\n",
    "    hp = np.zeros(len(data))\n",
    "    for i in range(2, len(data)):\n",
    "        hp[i] += c1 * (data[i] - 2 * data[i-1] + data[i-2]) \n",
    "        hp[i] += c2 * hp[i-1] \n",
    "        hp[i] += c3 * hp[i-2]\n",
    "\n",
    "    return hp\n",
    "\n",
    "def trend(data, length1, length2):\n",
    "    hp1 = high_pass_3(data, length1)\n",
    "    hp2 = high_pass_3(data, length2)\n",
    "    trends = hp1 - hp2\n",
    "\n",
    "    # Calculate TROC\n",
    "    troc = (length2 / (2 * np.pi)) * (trends[1:] - trends[:-1])\n",
    "    return trends, troc"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pybroker.ext.data import AKShare\n",
    "import matplotlib.pyplot as plot\n",
    "ak = AKShare()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loading bar data...\n",
      "Loaded bar data: 0:00:00 \n",
      "\n"
     ]
    }
   ],
   "source": [
    "data = ak.query(symbols=\"000001\", start_date=\"2019-01-01\", end_date=\"2020-01-01\", adjust=\"qfq\")\n",
    "data = data[['date','close']]\n",
    "data.set_index('date', inplace=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Axes: xlabel='date'>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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2fmq9TnLYDAIIYRITU0VV155pTh58qQQQogHHnhAzJ07V9x6660iPT1dnDp1SslhK+add94RP/zwQ7vXSX/1Hzp0SKhUKvHee+95ZCbAHU6cOCFGjRolxo4dK6677joRFhYmZs+eLXbv3i2EcHzfHTx4UIwZM0bcfvvtQgghzGazImPuSJ8OTrp7cpRkZGSI9PR00dTUpMRwFfH111+LkSNHiry8PCGEEM3NzeKBBx4QycnJYseOHUKI9n8pzWazCAsLE3//+9/dOl6ldXa8tm3bJoQQoq6urs39cnNzhUajEV999ZVbx6uk7vxumUwm+X24du1aERMT4zCVeL7p6py1Z88eERkZKYYOHSoCAgLE0KFDRV5enjhy5IjQarUiKytL4VfgXtu3bxcTJkwQKpVK/Pa3vxVFRUVCiLbndukcduONN4oRI0aIM2fOuH2snuCFF14Q06dPl/9ALy4uFqmpqWLJkiXy7450XXNzs3jttddEUFCQOHbsmBDCWg5RVVWlzOBb6dPTOrt370ZVVRW+/fZbPP744zh8+DDmzJmDV199FTt37oRKpXJInT7//PPYs2cPPvvsMxiNRmzYsKHfrx4oKytDfX09oqOjAVi3wb7zzjsxZswYuSBKrW77a7Bu3TqMGDEC11xzjVvHq7TOjtcf//hHAEBgYGCb+61btw5Tp07F3Llz3TpeJXXnd8t+qaKXlxf8/f3P67R7Z+esbdu2YcqUKdi1axdee+01fPPNNzh16hQSEhJgNpsRHBwMnU6n9Etwm5qaGnzyySeYNGkSnn76aWzevBmbN28G0PFy9DfffBO5ubn4+OOPUVNTgy+//BLr169336AVZDKZcOzYMURFRcnvu5iYGPzf//0f8vLy8M477wCwvg+FENBqtbjsssuQnp6OG264Aenp6bjssss85v3Zp4OT7pwcvby85NuPHj0a9957rzxPuXjxYjQ2NioydncxGAyIjo7GoUOH5MuGDx+OW265BYWFhfj000/lyw8fPowTJ07g3nvvxT333IMFCxYgJSVFiWErxpnjdejQIZw4cQL33HMPnn/+edxwww0ICAjwzMr3XtDdYyXVnsybNw85OTmoqalRYrgeoTvBb0pKCubPn485c+bI9/v0008xYcIEpKWlKTJuJfj7+2PRokW48847sWLFCqSkpODf//43Tp48CcBx+b5a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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "data['close'].plot()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "ename": "KeyError",
     "evalue": "2",
     "output_type": "error",
     "traceback": [
      "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "File \u001b[1;32mc:\\Users\\Dev\\.conda\\envs\\4broker\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3805\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   3804\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m-> 3805\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_engine\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcasted_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   3806\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n",
      "File \u001b[1;32mindex.pyx:167\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "File \u001b[1;32mindex.pyx:196\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[1;34m()\u001b[0m\n",
      "File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7081\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "File \u001b[1;32mpandas\\\\_libs\\\\hashtable_class_helper.pxi:7089\u001b[0m, in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[1;34m()\u001b[0m\n",
      "\u001b[1;31mKeyError\u001b[0m: 2",
      "\nThe above exception was the direct cause of the following exception:\n",
      "\u001b[1;31mKeyError\u001b[0m                                  Traceback (most recent call last)",
      "Cell \u001b[1;32mIn[16], line 1\u001b[0m\n\u001b[1;32m----> 1\u001b[0m trent \u001b[38;5;241m=\u001b[39m\u001b[43mtrend\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m10\u001b[39;49m\u001b[43m,\u001b[49m\u001b[38;5;241;43m20\u001b[39;49m\u001b[43m)\u001b[49m\n",
      "Cell \u001b[1;32mIn[1], line 19\u001b[0m, in \u001b[0;36mtrend\u001b[1;34m(data, length1, length2)\u001b[0m\n\u001b[0;32m     18\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mtrend\u001b[39m(data, length1, length2):\n\u001b[1;32m---> 19\u001b[0m     hp1 \u001b[38;5;241m=\u001b[39m \u001b[43mhigh_pass_3\u001b[49m\u001b[43m(\u001b[49m\u001b[43mdata\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mlength1\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m     20\u001b[0m     hp2 \u001b[38;5;241m=\u001b[39m high_pass_3(data, length2)\n\u001b[0;32m     21\u001b[0m     trends \u001b[38;5;241m=\u001b[39m hp1 \u001b[38;5;241m-\u001b[39m hp2\n",
      "Cell \u001b[1;32mIn[1], line 12\u001b[0m, in \u001b[0;36mhigh_pass_3\u001b[1;34m(data, length)\u001b[0m\n\u001b[0;32m     10\u001b[0m hp \u001b[38;5;241m=\u001b[39m np\u001b[38;5;241m.\u001b[39mzeros(\u001b[38;5;28mlen\u001b[39m(data))\n\u001b[0;32m     11\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m i \u001b[38;5;129;01min\u001b[39;00m \u001b[38;5;28mrange\u001b[39m(\u001b[38;5;241m2\u001b[39m, \u001b[38;5;28mlen\u001b[39m(data)):\n\u001b[1;32m---> 12\u001b[0m     hp[i] \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m c1 \u001b[38;5;241m*\u001b[39m (\u001b[43mdata\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m2\u001b[39m \u001b[38;5;241m*\u001b[39m data[i\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \u001b[38;5;241m+\u001b[39m data[i\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m2\u001b[39m]) \n\u001b[0;32m     13\u001b[0m     hp[i] \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m c2 \u001b[38;5;241m*\u001b[39m hp[i\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m1\u001b[39m] \n\u001b[0;32m     14\u001b[0m     hp[i] \u001b[38;5;241m+\u001b[39m\u001b[38;5;241m=\u001b[39m c3 \u001b[38;5;241m*\u001b[39m hp[i\u001b[38;5;241m-\u001b[39m\u001b[38;5;241m2\u001b[39m]\n",
      "File \u001b[1;32mc:\\Users\\Dev\\.conda\\envs\\4broker\\Lib\\site-packages\\pandas\\core\\frame.py:4102\u001b[0m, in \u001b[0;36mDataFrame.__getitem__\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   4100\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mnlevels \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[0;32m   4101\u001b[0m     \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_multilevel(key)\n\u001b[1;32m-> 4102\u001b[0m indexer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mcolumns\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[0;32m   4103\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_integer(indexer):\n\u001b[0;32m   4104\u001b[0m     indexer \u001b[38;5;241m=\u001b[39m [indexer]\n",
      "File \u001b[1;32mc:\\Users\\Dev\\.conda\\envs\\4broker\\Lib\\site-packages\\pandas\\core\\indexes\\base.py:3812\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[1;34m(self, key)\u001b[0m\n\u001b[0;32m   3807\u001b[0m     \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(casted_key, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m (\n\u001b[0;32m   3808\u001b[0m         \u001b[38;5;28misinstance\u001b[39m(casted_key, abc\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[0;32m   3809\u001b[0m         \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m casted_key)\n\u001b[0;32m   3810\u001b[0m     ):\n\u001b[0;32m   3811\u001b[0m         \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key)\n\u001b[1;32m-> 3812\u001b[0m     \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[0;32m   3813\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[0;32m   3814\u001b[0m     \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[0;32m   3815\u001b[0m     \u001b[38;5;66;03m#  InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[0;32m   3816\u001b[0m     \u001b[38;5;66;03m#  the TypeError.\u001b[39;00m\n\u001b[0;32m   3817\u001b[0m     \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_indexing_error(key)\n",
      "\u001b[1;31mKeyError\u001b[0m: 2"
     ]
    }
   ],
   "source": [
    "trent =trend(data,10,20)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "4broker",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
